// 文件名称：login_check.js
// 完整保存路径：miniprogram/utils/login_check.js
// 功能说明：统一的登录状态检查工具
// 使用说明：在页面中使用此工具检查登录状态

const { isLoggedIn, computeUserStatus } = require('./auth.js');

/**
 * 检查登录状态，如果未登录则跳转到首页
 * @param {boolean} showToast 是否显示提示信息
 * @returns {boolean} 是否已登录
 */
function checkLoginStatus(showToast = true) {
  const { status } = computeUserStatus();
  if (status === 'visitor') {
    if (showToast) {
      wx.showToast({ title: '请先登录', icon: 'error' });
    }
    setTimeout(() => {
      wx.switchTab({ url: '/pages/welcome/welcome' });
    }, showToast ? 800 : 0);
    return false;
  }
  return true;
}

/**
 * 检查登录状态并执行回调函数
 * @param {Function} callback 登录成功后的回调函数
 * @param {boolean} showToast 是否显示提示信息
 */
function checkLoginAndExecute(callback, showToast = true) {
  if (checkLoginStatus(showToast)) {
    callback();
  }
}

/**
 * 页面级别的登录检查装饰器
 * @param {Object} pageConfig 页面配置
 * @returns {Object} 修改后的页面配置
 */
function withLoginCheck(pageConfig) {
  const originalOnLoad = pageConfig.onLoad;
  
  pageConfig.onLoad = function(options) {
    if (!checkLoginStatus()) {
      return;
    }
    
    if (originalOnLoad) {
      originalOnLoad.call(this, options);
    }
  };
  
  return pageConfig;
} 

module.exports = { checkLoginStatus, checkLoginAndExecute, withLoginCheck };